<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>豆豆笔记</title>
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="/layui/css/layui.css"/>
    <link rel="stylesheet" href="/static/css/main.css"/>
    <link rel="stylesheet" href="https://unpkg.com/@highlightjs/cdn-assets@11.9.0/styles/default.min.css">
<!--    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/styles/monokai.min.css">-->
    <script src="https://unpkg.com/@highlightjs/cdn-assets@11.9.0/highlight.min.js"></script>


    <script src="https://unpkg.com/@highlightjs/cdn-assets@11.9.0/languages/javascript.min.js"></script>
    <style>
        .ws-main {
            border: 0;
        }
    </style>
</head>
<body>
<div class="layui-header ws-header ws-bg-light">
    <div class="layui-container">
        <div class="ws-logo">
            <a class="logo" href="/" style="display: flex;align-items: center;">
                <img src="/img/logo.png" alt="豆豆笔记" style="color: #16BAAA;font-size: 30px;width: auto;height: 30px;line-height:60px;">
                <text style="margin-left: 10px;">豆豆笔记</text>
            </a>
        </div>
        <div class="ws-header-menu">
            <ul class="layui-nav layui-bg-gray ws-bg-light">
                <li class="layui-nav-item layui-this"><a href="/">首页</a></li>
                <li class="layui-nav-item"><a href="/about/">关于</a></li>
                <li class="layui-nav-item"><a href="/tool/">工具</a></li>
                <li class="layui-nav-item"><a href="/sponsor/">赞助</a></li>
            </ul>
            <div class="ws-header-tool ws-bg-light" style="display: inline-block">
                <div class="layui-form" lay-filter="form">
                    <input type="checkbox" name="themeMode" lay-filter="header-theme-mode" lay-skin="switch">
                    <div lay-checkbox>
                        <i class="layui-icon layui-icon-moon"></i> |
                        <i class="layui-icon layui-icon-light"></i>
                    </div>
                </div>
            </div>
        </div>
        <div class="ws-header-menu-btn">
            <a class="ws-menu-phone" href="javascript:;" style="display: block;">
                <i class="ws-header-menu-icon layui-icon layui-icon-shrink-right"></i>
            </a>
        </div>
    </div>

</div>
<div class="ws-menu-phone-list">
    <div style="background-color: inherit;">
        <div style="height: 60px; text-align: right;">
            <i class="ws-menu-phone-close layui-icon layui-icon-spread-left" style="color: #333333;line-height: 60px;margin-right: calc(90% * 0.09);"></i>
        </div>
        <ul>
            <li style="border-top: 1px solid #888888;padding: 20px 40px;"><a href="/">首页</a></li>
            <li style="border-top: 1px solid #888888;padding: 20px 40px;"><a href="/about/">关于</a></li>
            <li style="border-top: 1px solid #888888;padding: 20px 40px;"><a href="/tool/">工具</a></li>
            <li style="border-top: 1px solid #888888;padding: 20px 40px;"><a href="/sponsor/">赞助</a></li>
        </ul>
    </div>

</div>
<div class="layui-main ws-main ws-bg-light ">
    <div class="layui-padding-3 ws-detail">
        <div class="ws-detail-hd">
            <div class="ws-article-head">
                <h2>OpenSSL安装与自签名证书</h2>
            </div>
            <div class="ws-foot">
                <span><i class="layui-icon layui-icon-eye"></i>3289</span>
                <span><i class="layui-icon layui-icon-time"></i>2019-04-22</span>
                <span><i class="layui-icon layui-icon-list"></i>OpenSSL</span>
            </div>
        </div>

        <div class="ws-detail-bd layui-text">
            <h3></h3>

            <blockquote class="layui-elem-quote">
                <div>在日常开发过程中，我们经常会需要使用https来进行开发和测试，往下看。</div>
                <div>使用 OpenSSL 生成证书的过程一般包括生成私钥、生成证书签名请求（CSR）、以及使用私钥签署证书。</div>
                <div>下面是一个常见的生成证书的流程，假设我们要生成一个自签名的证书。</div>
                <div>OpenSSL for Windows下载地址：<a href="javascript:;" download="Win64OpenSSL-3_4_0.exe">Win64OpenSSL-3_4_0.exe</a></div>
            </blockquote>


            <h3>一、安装 OpenSSL：</h3>
            <ol>
                <li>下载完成后，双击<code>.exe</code>安装文件进行安装。</li>
                <li>在安装过程中，会有一个提示框询问是否要将 OpenSSL 添加到系统的 PATH 环境变量中。推荐选择 "Add OpenSSL to the system PATH"，这样你就可以在命令行中直接使用 OpenSSL。</li>
            </ol>
            <br>
            <blockquote class="layui-elem-quote">如果没有选择自动配置环境变量，你也可以手动配置环境变量：</blockquote>
            <ul>
                <li>右键点击 <strong>“此电脑”</strong>（或 <strong>“计算机”</strong>）图标，选择<strong>“属性”</strong>。</li>
                <li>点击 <strong>“高级系统设置”</strong>，然后点击 <strong>“环境变量”</strong>。</li>
                <li>在 <strong>“系统变量”</strong> 中，找到<code>Path</code>，并点击<strong>“编辑”</strong>。</li>
                <li>点击<strong>“新建”</strong> ，然后输入 OpenSSL 的安装路径，例如 C:\Program Files\OpenSSL\bin。</li>
                <li>点击<strong>“确定”</strong>保存。</li>
                <li>重启电脑让配置生效。</li>
            </ul>

            <h3>二、验证 OpenSSL 是否安装成功：</h3>
            <p>安装完成后，打开 命令提示符（可以按 Win + R，输入 cmd 打开）并输入以下命令：</p>
            <pre lay-options="{lang:'bash'}">
openssl version
            </pre>
            <p>如果 OpenSSL 安装成功，应该会显示 OpenSSL 的版本信息，例如：</p>
            <pre lay-options="{lang:'bash'}">
OpenSSL 3.4.0 22 Oct 2024 (Library: OpenSSL 3.4.0 22 Oct 2024)
            </pre>
            <p>如果显示了版本信息，说明 OpenSSL 已经安装成功，并且环境变量配置正确。</p>
            <h3>三、生成私钥（Private Key）</h3>
            <p>首先，需要生成一个私钥。私钥是证书的核心部分，必须保密。</p>
            <pre lay-options="{lang:'bash'}">
openssl genpkey -algorithm RSA -out private.key -aes256
</pre>
            <ul>
                <li><code>-algorithm RSA</code> 指定了生成 RSA 算法的私钥。</li>
                <li><code>-out private.key</code> 指定了生成的私钥文件名。</li>
                <li><code>-aes256</code> 使用 AES-256 加密私钥文件，可以根据需要更换加密算法。</li>
            </ul>
            <h3>四、生成证书签名请求（CSR）</h3>
            <p>接下来，生成证书签名请求（CSR）。CSR 文件通常用于向 CA 请求签署证书，但我们也可以使用它来生成自签名证书。</p>
            <pre lay-options="{lang:'bash'}">
openssl req -new -key private.key -out request.csr
</pre>
            <ul>
                <li><code>-new</code> 表示生成新的请求。</li>
                <li><code>-key private.key</code> 使用之前生成的私钥。</li>
                <li><code>-out request.csr</code> 指定 CSR 文件的输出文件名。</li>
            </ul>
            <p>在生成 CSR 时，OpenSSL 会提示你输入一些关于证书的信息，例如：</p>
            <ul>
                <li>国家代码（Country Name）</li>
                <li>省/自治区（State or Province Name）</li>
                <li>城市（Locality Name）</li>
                <li>组织（Organization Name）</li>
                <li>单位（Organizational Unit Name）</li>
                <li>公共名称（Common Name，通常是域名或主机名）</li>
                <li>电子邮件地址（Email Address）</li>
            </ul>
            <h3>五、使用私钥签署证书（生成自签名证书）</h3>
            <p>生成证书签名请求后，可以使用私钥来签署证书并生成自签名证书。</p>
            <pre lay-options="{lang:'bash'}">
openssl x509 -req -in request.csr -signkey private.key -out certificate.crt -days 365
</pre>
            <ul>
                <li><code>-req</code> 表示是 CSR 请求文件。</li>
                <li><code>-in request.csr</code> 是你刚才生成的 CSR 文件。</li>
                <li><code>-signkey private.key</code> 使用之前生成的私钥签署证书。</li>
                <li><code>-out certificate.crt</code> 指定生成的证书文件名。</li>
                <li><code>-days 365</code> 设置证书的有效期（单位：天）。</li>
            </ul>
            <h3>六、验证证书</h3>
            <p>生成证书后，你可以使用以下命令查看证书内容：</p>
            <pre lay-options="{lang:'bash'}">
openssl x509 -in certificate.crt -text -noout
</pre>
            <p>这将显示证书的详细信息。</p>
            <h3>七、注意事项</h3>
            <p>通过这些步骤，你就能生成自己的私钥和自签名证书。这种证书适用于测试和开发环境，但不适合生产环境。</p>
            <p>在生产环境中，通常需要通过受信任的证书颁发机构（CA）来签署证书。</p>
            <hr/>
        </div>
    </div>

</div>

<script type="text/html" id="qrModal">
    <div class="layui-row" style="display: flex; padding:15px;">
        <div class="layui-col-md6" style="flex: 0 0 50%;text-align: center;">
            <img src="/img/wxpay.jpg" class="ws-sponsor-img"/>
        </div>
        <div class="layui-col-md6" style="flex: 0 0 50%;text-align: center;">
            <img src="/img/alipay.jpg" class="ws-sponsor-img"/>
        </div>
    </div>
</script>
<div class="layui-footer ws-footer ws-bg-light">
    <div class="ws-text">
        <div class="ws-footer-menu">
            <div class="ws-footer-menu-type">
                <dl style="flex: 0 0 50%;max-width: 33.33%;width: 100%;">
                    <dt class="ws-bg-light">相关连接</dt>
                    <dd><a class="no-referrer" href="javascript:;" data-title="请作者喝咖啡" data-target="#qrModal">捐赠</a></dd>
                </dl>
                <dl style="flex: 0 0 50%;max-width: 33.33%;width: 100%;">
                    <dt class="ws-bg-light">联系我们</dt>
                    <dd>htct1314@foxmail.com</dd>
                </dl>

            </div>
            <div class="ws-footer-qr-code-list">
                <div class="ws-footer-qr-code">
                    <div style="border: 1px solid #d1d1d1">
                        <img src="/img/applet.jpg" style="width:100%;max-width: 100%;" alt=""/>
                    </div>
                    <div style="text-align: center">小程序</div>
                </div>
                <div class="ws-footer-qr-code">
                    <div style="border: 1px solid #d1d1d1">
                        <img src="/img/we_chat.png" style="width:100%;max-width: 120px" alt=""/>
                    </div>
                    <div style="text-align: center">微信</div>
                </div>
                <div class="ws-footer-qr-code">
                    <div style="border: 1px solid #d1d1d1">
                        <img src="/img/sina.png" style="width:100%;max-width: 120px" alt=""/>
                    </div>
                    <div style="text-align: center">新浪微博</div>
                </div>

            </div>
        </div>
        <hr/>
        <p>友情链接：
            <a href="//www.aliyun.com" target="_blank">阿里云</a>
            <a href="https://www.huaweicloud.com/" target="_blank">华为云</a>
            <a href="//cloud.tencent.com" target="_blank">腾讯云</a>
            <a href="//www.ctyun.cn/" target="_blank">天翼云</a>
            <a href="//layui.dev" target="_blank">Layui</a>
            <a href="//cli.im/" target="_blank">草料网</a>
            <a href="//compresspng.com/zh/" target="_blank">在线压缩图片</a>
            <a href="//www.thinkphp.cn" target="_blank">ThinkPHP</a>
        </p>
        <div class="ws-footer-copyright">
            <div>Copyright © <span id="footer-year"></span> 豆豆笔记 All Rights Reserved.</div>
            <div>豆豆笔记&nbsp;版权所有</div>
            <div>
                <a href="https://beian.miit.gov.cn" target="_blank">
                    <img src="http://htct1314.cn/img/icon.png" style="height:16px;margin-right:5px;" alt/>
                    <span>闽ICP备2022002089号-1</span>
                </a>
            </div>
        </div>
    </div>
</div>
<ul class="layui-fixbar" style="display: none;">
    <li lay-type="top" style="display: list-item;">
        <a href="javascript:;" class="layui-icon layui-icon-top layui-fixbar-top" style="display: block;color:#fff;"></a>
    </li>
</ul>

<script src="/layui/layui.js"></script>
<script src="/static/js/main.js"></script>
</body>
</html>